/*******************************************************************************
 * 重写Ext.form.HtmlEditor，为其添加键盘事件 author: hoojo email: hoojo_@126.com blog:
 * http://blog.csdn.net/IBM_hoojo create by: 2010-8-14 ext-lib: 3.2.1 version:
 * 1.0
 */
Ext.override(Ext.form.HtmlEditor, {
			initEditor : function() {
				var dbody = this.getEditorBody();
				var ss = this.el.getStyles('font-size', 'font-family',
						'background-image', 'background-repeat');
				ss['background-attachment'] = 'fixed'; // w3c
				ss['background-color'] = 'white';
				dbody.bgProperties = 'fixed'; // ie
				Ext.DomHelper.applyStyles(dbody, ss);
				if (this.doc) {
					try {
						Ext.EventManager.removeAll(this.doc);
					} catch (e) {
					}
				}
				this.doc = this.getDoc();
				Ext.EventManager.on(this.doc, {
							'mousedown' : this.onEditorEvent,
							'dblclick' : this.onEditorEvent,
							'click' : this.onEditorEvent,
							'keyup' : this.onEditorKeyUpEvent,
							'keydown' : this.onEditorKeyDownEvent,
							'keypress' : this.onEditorKeyPressEvent,
							buffer : 100,
							scope : this
						});
				if (Ext.isGecko) {
					Ext.EventManager.on(this.doc, 'keypress',
							this.applyCommand, this);
				}
				if (Ext.isIE || Ext.isSafari || Ext.isOpera) {
					Ext.EventManager
							.on(this.doc, 'keydown', this.fixKeys, this);
				}
				this.initialized = true;
				this.fireEvent('initialize', this);
				this.doc.editorInitialized = true;
				this.pushValue();
			},
			initComponent : function() {
				this.addEvents('initialize', 'activate', 'beforesync',
						'beforepush', 'sync', 'push', 'editmodechange',
						'keydown', 'keyup', 'keypress');
			},
			onEditorKeyPressEvent : function(e) {
				this.updateToolbar();
				this.fireEvent("keypress", this, e);
			},
			onEditorKeyUpEvent : function(e) {
				this.updateToolbar();
				this.fireEvent("keyup", this, e);
			},
			onEditorKeyDownEvent : function(e) {
				this.updateToolbar();
				this.fireEvent("keydown", this, e);
			}
		});

/**
 * 重写后的Ext.form.HtmlEditor有了键盘的keyPress事件了
 */
Ext.ns("Ext.hoo.editor");
Ext.hoo.editor.HTMLEditor = Ext.extend(Ext.form.HtmlEditor, {
			constructor : function() {
				Ext.hoo.editor.HTMLEditor.superclass.constructor.call(this, {
							renderTo : Ext.getBody(),
							fieldLabel : 'Biography',
							height : 200,
							listeners : {
								"keydown" : function(editor, e) {
									alert("keydown:" + editor.getValue());
								},
								"keyup" : function(editor, e) {
									alert("keyup:" + editor.getValue());
								},
								"keypress" : function(editor, e) {
									alert("keypress:" + editor.getValue());
								}
							}
						});
			}
		});
